// Created by WXX on 2022/1/7 22:32
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

/**
 * 执行用时：20 ms, 在所有 C++ 提交中击败了85.32%的用户
 * 内存消耗：9.4 MB, 在所有 C++ 提交中击败了65.74%的用户
 */
class Solution {
public:
    int lengthOfLongestSubstringTwoDistinct(string s) {
        vector<int> f(128);
        int i = 0, j = 0, cnt = 0, res = 0;

        while (j < s.size()) {
            if (++f[s[j++]] == 1 && ++cnt > 2) {
                while (--f[s[i++]] != 0);
                cnt--;
            }
            res = max(res, j - i);
        }

        return res;
    }
};

int main() {

    cout << Solution().lengthOfLongestSubstringTwoDistinct("eceba") << endl;  // 3

    return 0;
}
